﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros_acCadWorkflowParametros : System.Web.UI.Page
{
    int idContrato = 0;

    const int idAbaLocalida = 1;
    const int idAbaEmpresa = 2;
    const int idAbaPessoa = 3;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["idContrato"] != null)
            idContrato = int.Parse(Request.QueryString["idContrato"].ToString());

        if (!IsPostBack)
        {
            CarregarDados();
        }
    }

    #region Eventos

    #region Geral
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        try
        {
            List<TipoProcesso> listTipoProcesso = new List<TipoProcesso>();

            // Localidade - Processos Localidade
            foreach (GridDataItem dataItem in GridLocalidade.MasterTableView.Items)
            {
                for (int i = 0; i < dataItem.ChildItem.NestedTableViews.Count(); i++)
                {
                    foreach (GridDataItem dataItemHier in dataItem.ChildItem.NestedTableViews[i].Items)
                    {
                        int idTipoProcesso = int.Parse(dataItemHier.Cells[2].Text);
                        int idLocalidade = int.Parse(dataItemHier.Cells[3].Text);

                        bool controlaGente = (dataItemHier.FindControl("chkGente") as CheckBox).Checked;
                        bool controlaRisco = (dataItemHier.FindControl("chkRisco") as CheckBox).Checked;

                        TipoProcesso tipoProcesso = new TipoProcesso(idTipoProcesso, controlaGente, controlaRisco, idLocalidade);

                        listTipoProcesso.Add(tipoProcesso);
                    }
                }
            }

            //Empresa - Processos Empresa
            foreach (GridDataItem dataItem in GridEmpresa.MasterTableView.Items)
            {
                int idTipoProcesso = int.Parse(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IdTipoProcesso"].ToString());

                bool controlaGente = (dataItem.FindControl("chkGente") as CheckBox).Checked;
                bool controlaRisco = (dataItem.FindControl("chkRisco") as CheckBox).Checked;

                TipoProcesso tipoProcesso = new TipoProcesso(idTipoProcesso, controlaGente, controlaRisco);

                listTipoProcesso.Add(tipoProcesso);
            }

            //Pessoa - Processo Pessoa
            foreach (GridDataItem dataItem in GridPessoa.MasterTableView.Items)
            {
                int idTipoProcesso = int.Parse(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IdTipoProcesso"].ToString());

                bool controlaGente = (dataItem.FindControl("chkGente") as CheckBox).Checked;
                bool controlaRisco = (dataItem.FindControl("chkRisco") as CheckBox).Checked;

                TipoProcesso tipoProcesso = new TipoProcesso(idTipoProcesso, controlaGente, controlaRisco);

                listTipoProcesso.Add(tipoProcesso);
            }

            ProcessoContrato processoContrato = new ProcessoContrato();
            processoContrato.Salvar(idContrato, listTipoProcesso);

            lblResultado.Text = "Dados salvos com sucesso!";
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {

    }
    #endregion

    #region Grid Localidade
    protected void GridLocalidade_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            CarregarGridLocalidadeProcessos(idAbaLocalida);
        }
    }

    protected void GridLocalidade_DetailTableDataBind(object source, GridDetailTableDataBindEventArgs e)
    {
        GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
        switch (e.DetailTableView.Name)
        {
            case "TableViewProcLocalidades":
                int idtipoprocesso = int.Parse(dataItem.GetDataKeyValue("IdTipoProcesso").ToString());
                TipoProcesso tipoProcesso = new TipoProcesso();
                e.DetailTableView.DataSource = tipoProcesso.SelectPorLocalidade(idContrato, idtipoprocesso);
                break;
        }
    }

    protected void ChkSelectedLocGente(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridLocalidade.MasterTableView.Items)
            {
                for (int i = 0; i < dataItem.ChildItem.NestedTableViews.Count(); i++)
                {
                    foreach (GridDataItem dataItemHier in dataItem.ChildItem.NestedTableViews[i].Items)
                    {
                        (dataItemHier.FindControl("chkGente") as CheckBox).Checked = true;
                    }
                }
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridLocalidade.MasterTableView.Items)
            {
                for (int i = 0; i < dataItem.ChildItem.NestedTableViews.Count(); i++)
                {
                    foreach (GridDataItem dataItemHier in dataItem.ChildItem.NestedTableViews[i].Items)
                    {
                        (dataItemHier.FindControl("chkGente") as CheckBox).Checked = false;
                    }
                }
            }
        }
    }

    protected void ChkSelectedLocRisco(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridLocalidade.MasterTableView.Items)
            {
                for (int i = 0; i < dataItem.ChildItem.NestedTableViews.Count(); i++)
                {
                    foreach (GridDataItem dataItemHier in dataItem.ChildItem.NestedTableViews[i].Items)
                    {
                        (dataItemHier.FindControl("chkRisco") as CheckBox).Checked = true;
                    }
                }
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridLocalidade.MasterTableView.Items)
            {
                for (int i = 0; i < dataItem.ChildItem.NestedTableViews.Count(); i++)
                {
                    foreach (GridDataItem dataItemHier in dataItem.ChildItem.NestedTableViews[i].Items)
                    {
                        (dataItemHier.FindControl("chkRisco") as CheckBox).Checked = false;
                    }
                }
            }
        }
    }
    #endregion

    #region Grid Empresa
    protected void GridEmpresa_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            CarregarGridEmpresaProcessos(idAbaEmpresa);
        }
    }
    protected void ChkSelectedEmpGente(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridEmpresa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridEmpresa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = false;
            }
        }
    }
    protected void ChkSelectedEmpRisco(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridEmpresa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkRisco") as CheckBox).Checked = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridEmpresa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkRisco") as CheckBox).Checked = false;
            }
        }
    }
    #endregion

    #region Grid Pessoa
    protected void GridPessoa_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            CarregarGridPessoaProcessos(idAbaPessoa);
        }
    }
    protected void ChkSelectedPessGente(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridPessoa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridPessoa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = false;
            }
        }
    }
    protected void ChkSelectedPessRisco(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridPessoa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkRisco") as CheckBox).Checked = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridPessoa.MasterTableView.Items)
            {
                (dataItem.FindControl("chkRisco") as CheckBox).Checked = false;
            }
        }
    }
    #endregion

    #endregion

    #region Metodos
    
    #region Geral
    private void CarregarDados()
    {
        Contrato contrato = new Contrato(idContrato);

        lblPatrocinado.Text = contrato.OrganizacaoRelacao.OrganizacaoPatrocinador.NomeFantasia;
        lblPrestador.Text = contrato.OrganizacaoRelacao.OrganizacaoPrestador.NomeFantasia;
        lblContrato.Text = contrato.Descricao;
        lblVigencia.Text = contrato.DataInicioVigencia.ToString("dd/MM/yyyy") + " a " + contrato.DataFimVigencia.ToString("dd/MM/yyyy");

    }
    #endregion

    #region Localidade
    private void CarregarGridLocalidadeProcessos(int idProcessoAba)
    {
        TipoProcesso tipoProcesso = new TipoProcesso();
        GridLocalidade.DataSource = tipoProcesso.SelectPor(idProcessoAba, idContrato);
    }
    #endregion

    #region Empresa
    private void CarregarGridEmpresaProcessos(int idProcessoAba)
    {
        TipoProcesso tipoProcesso = new TipoProcesso();
        GridEmpresa.DataSource = tipoProcesso.SelectPor(idProcessoAba, idContrato);
    }
    #endregion

    #region Pessoa
    private void CarregarGridPessoaProcessos(int idProcessoAba)
    {
        TipoProcesso tipoProcesso = new TipoProcesso();
        GridPessoa.DataSource = tipoProcesso.SelectPor(idProcessoAba, idContrato);
    }
    #endregion

    #endregion
}
